#!/bin/bash

#! amount args
# ${_is_amount_arg} ${NARGS} min_equ max_equ
# if [ $? -ne 0 ]; then
#     plt_pause "from ${FNN}() :: ${_is_amount_arg} ${NARGS} min_equ:: be return 1"
#     return 1
# fi
#! normalize ptr_path -> absolut path
# ptr_path=$1
# ptr_path=$(${_abs_path} $PPWD "ptr_path") #ptr args
#! variables for cr_f_dir_insert_
# fn_name=$(${_prs_f} -n ${arg_path})
# root_path=$(${_prs_f} -d ${arg_path})
#! search in array
# [[ " ${arr[*]} " =~ " $1 " ]] && echo "true" || echo "false"
#! ${array[@]:1} all from 1 member arr

# echo -e "${GREEN}\${g_args[@]} = ${g_args[*]}${NORMAL}" #print variable
# echo -e "${GREEN}\${e_args[@]} = ${e_args[*]}${NORMAL}" #print variable
# echo -e "${GREEN}\${f_args[@]} = ${f_args[*]}${NORMAL}" #print variable
# echo -e "${GREEN}\${ARGS[@]} = ${ARGS[*]}${NORMAL}"     #print variable
# echo -e "${GREEN}\${NARGS} = ${NARGS}${NORMAL}"         #print variable
# echo -e "${GREEN}\${ARGS0} = ${ARGS0}${NORMAL}"         #print variable
# echo -e "${GREEN}\${ARGS1} = ${ARGS1}${NORMAL}"         #print variable
# echo -e "${GREEN}\${ARGS2} = ${ARGS2}${NORMAL}"         #print variable
# echo -e "${GREEN}\${PPWD} = ${PPWD}${NORMAL}"           #print variable

# echo -e "${GREEN}\${dir_fns_} = ${dir_fns_}${NORMAL}" #print variable

# echo -e "${GREEN}\${var_wrap_arr[@]} = ${var_wrap_arr[*]}${NORMAL}" #print variable
# echo -e "${GREEN}\${var_fn_arr[@]} = ${var_fn_arr[*]}${NORMAL}"     #print variable

# echo -e "${GREEN}\${arg_fn_arr[@]} = ${arg_fn_arr[*]}${NORMAL}"
# echo -e "${GREEN}\${env_fn_arr[@]} = ${env_fn_arr[*]}${NORMAL}"
# echo -e "${GREEN}\${pts_fn_arr[@]} = ${pts_fn_arr[*]}${NORMAL}"

# echo -e "${GREEN}\$val_ppr = $val_ppr${NORMAL}" #print variable

# echo -e "${GREEN}\$ratis = $ratis${NORMAL}" #print variable

# echo "that ${FNN}.sal"

#! every from list_strong_cntls by able
# list_strong_cntls=(?str_ ?del_ ?parr_)
# for item in "${list_strong_cntls[@]}"; do
#     echo -e "${GREEN}\$item = $item${NORMAL}" #print variable
#     echo "$(eval echo \$"$item")"
#     if [ -z "$(eval echo \$"$item")" ]; then
#         plt_info "from ${FNN}() :: $item is empty :: be return 1"
#         return 1
#     fi
# done

#! once dpl_ or bcp_ mast be able (0 1)
# sum_1=$((${dpl_:-0} + ${bcp_:-0}))
# echo -e "${GREEN}\$sum_1 = $sum_1${NORMAL}"

# if [ "${sum_1:-0}" -ne 1 ]; then
#     plt_info "from ${FNN}() once dpl_ or bcp_ mast be able :: be return 1"
#     return 1
# fi

#! see ${PATH_CURR_REPO}/NBash/_man/ptr/flow_1.sh
#? in nid allready be reseiving value from ppr_
#   eval val_ppr=\$"${ppr_}" # reseiving value from ppr_
#? use and assign new value to ppr_
#   eval ${ppr_}=$(any_fn ${val_ppr}) # use old value of ppr_ and assign new value to ppr_

#! in pts_fn_arr contane external idetificators (pointers)
# num=
# echo num>pts.list
# any_fn(){num=10}
# any_fn --_pts pts.list
# any_fn
# echo ${num}
# 10

#! cr fs cr_f_
# cr_f_ \
#     "$filename" \
#     --tml "${PATH_TML_DIR}/cr_shf_/shf.tml" \
#     --fi0 "${header}" --fr0 "{header}" \
#     --vi0 "$filename" --vr0 "{filename}"

#! cr fs standart
# "${_obs_quis_}" "$filename"
# "${_upg_path}" "$filename"

#! cr fs cr_f_dir_insert_
# ${_cr_f_dir_insert_} --name ${filename} --dir_insert ${PATH_INSERT_DIR}/obs_quis_

#! innerfns
# if [ -d "${sil_}/proc/fol_" ]; then

#     c_up "${sil_}/proc/fol_"

#     inner_fn_arr=()
#     dr2parr_ inner_fn_arr 3 "${sil_}/proc/fol_"

# else
#     plt_exit "in ${FNN} : NOT_DIR : '${sil_}/proc/fol_' return 1"
#     return 1
# fi

# for item6 in ${inner_fn_arr[@]}; do
#     echo -e "${GREEN}\$item6 = $item6${NORMAL}" #print variable

#     ${item6}

#     ret_nom=$?
#     if [ ${ret_nom} -eq 2 ]; then
#         return 0
#     fi
#     if [ ${ret_nom} -eq 3 ]; then
#         return 1
#     fi
#     echo -e "${GREEN}\$ret_nom = $ret_nom${NORMAL}" #print variable

# done

#?--------------------------------------------------------
#?---------------------------------------------
#?---------------------------------------

file_resiv=${ARGS0}
num_flow=${ARGS1}

if [[ "${ARGS2}" == "-dpl" ]]; then
    plt_info "in -dpl mode"
    lst_mitt=${ST_RC_D_DATA_PATH}/.d/.st_rc_d.data.d/arb2f_stl0/mitt_arb_dpl.lst

else
    lst_mitt=${ST_RC_D_DATA_PATH}/.d/.st_rc_d.data.d/arb2f_stl0/mitt_arb.lst
fi

arr_arb=($(${_f2e} ${lst_mitt}))
parr3e_ arr_arb

echo -e "${GREEN}\$file_resiv = $file_resiv${NORMAL}" #print variable
echo -e "${GREEN}\$num_flow = $num_flow${NORMAL}"     #print variable

echo -e "${BLUE}--- exec ${FNN}() (num_menu) ---${NORMAL}" #started functions
# arr=()
# res=()

# arr=($(${_f2e} ${lst_mitt}))

#{arr_res}
# arr+=("aaaaaaaaa")
# res+=("bbbbbbbbb")
# arr+=("aaaaaaaaa")
# res+=("bbbbbbbbb")
# arr+=("aaaaaaaaa")
# res+=("bbbbbbbbb")
# arr+=("aaaaaaaaa")
# res+=("bbbbbbbbb")
# arr+=("exit menu")
# res+=("return 0")

arb2f_insert() {                                        #$1 arb
    echo -e "${CYAN}--- arb2f_insert() $* ---${NORMAL}" #sistem info mesage
    local arb_dir=$1
    echo -e "${HLIGHT}--- ${_d2e_} -n -dd ${arb_dir} ram ---${NORMAL}" #start files
    ${_d2e_} -n -dd ${arb_dir} ram

    local arr_ram_name=($(${_d2e_} -n -dd ${arb_dir} ram))
    parr3e_ arr_ram_name

    for mitt in ${arr_ram_name[@]}; do

        if grep "{{${mitt}}}" "${file_resiv}"; then
            echo -e "${GREEN}\$mitt = $mitt${NORMAL}" #print variable

            file_mitt=${arb_dir}/${mitt}.ram/cont.fol
            echo -e "${GREEN}\$file_mitt = $file_mitt${NORMAL}" #print variable

            if [ -f "${file_mitt}" ] && [ -f "${file_resiv}" ]; then
                echo -e "${HLIGHT}--- cr_f_ ${file_resiv} --fi0 ${file_mitt} --fr0 {{${mitt}}} ---${NORMAL}" #start files

                cr_f_ "${file_resiv}" --fi0 "${file_mitt}" --fr0 "{{${mitt}}}"

                cr_f_ "${file_resiv}" --vi0 "[[${mitt}]]" --vr0 "{{${mitt}}}"

            else
                plt_exit "in ${FNN} : NOT_FILE : file://${file_resiv} && file://${file_mitt} return 1"
                return 1
            fi
        fi

    done
}

arb2f_insert_all() {
    echo -e "${CYAN}--- arb2f_insert_all() ---${NORMAL}" #sistem info mesage

    for arb_to_ins in $(${_f2e} ${lst_mitt}); do
        echo -e "${HLIGHT}--- arb2f_insert ${arb_to_ins} ---${NORMAL}" #start files
        arb2f_insert "${arb_to_ins}"
    done

}

arb2f_E() {
    echo -e "${CYAN}--- arb2f_E() ---${NORMAL}" #sistem info mesage

    for arb_curr in ${arr_arb[@]}; do

        echo -e "${HLIGHT}--- fol_ --_sil ${SIL_A} --_arb ${arb_curr} -_E ---${NORMAL}" #start files

        fol_ --_sil "${SIL_A}" --_arb "${arb_curr}" -_E

    done

}

if [ -z "${file_resiv}" ]; then
    arb2f_E
    return 0
fi

if [ -n "${file_resiv}" ]; then

    file_resiv=$(${_abs_path} $PPWD "file_resiv")

    echo -e "${GREEN}\$file_resiv = $file_resiv${NORMAL}" #print variable

    if [ -f "${file_resiv}" ]; then

        if [ "${num_flow:-10}" -eq 0 ]; then
            arb2f_insert_all
            return 0
        fi

        if [ $(num_01 ${num_flow}) -eq 1 ] && [ ${num_flow} -le ${#arr_arb[@]} ]; then
            num_res=$((${num_flow} - 1))
            eligendi="${arr_arb[${num_res}]}"
        fi

        if [[ -z ${eligendi} ]]; then
            PS3="eligendi actiones: "
            select item_arr in "${arr_arb[@]}"; do
                eligendi="${item_arr}"
                break
            done
        fi

        echo -e "${GREEN}\$eligendi = $eligendi${NORMAL}" #print variable

        arb2f_insert "$eligendi"
    fi
fi
#{zzz20}

#{main_body_fn}

#?---------------------------------------
#?---------------------------------------------
#?--------------------------------------------------------
